02. fork 仓库
fork 仓库 - 什么是 Fork?
在版本控制术语中,如果你 "fork" 一个仓库,则是指 复制 它。特别是当你 fork 属于别人的仓库时,你将制作 他们 仓库的完全一样的副本,之后这个副本便变成 你的 。
"fork" 的概念也不同于"克隆"。在克隆仓库时,你也会获得完全一样的仓库副本,但克隆发生在 本地 计算机上,并且克隆的是 远程 仓库。当你 fork 仓库时,会创建 远程 仓库的一份新副本。新副本也是一个 远程 仓库,但它现在属于你。
有
fork
子命令吗?
fork 不在命令行上执行;也不存在
git fork
命令。你可以尝试运行以下命令:
$ git fork
终端上正在运行
git fork
(不存在!)命令。Git 没有
fork
子命令,所以它的回应是建议使用替代命令。
如你所见,尝试运行
git fork
命令会产生错误。(另外,
fsck
并不是粗话,它表示"文件系统检测",指的是审核文件的一致性。)
修改克隆的仓库
Task Description:
请执行以下步骤并回答下面的问题。
Task Feedback:
很好,你完成了所有这些步骤!现在请回答下面的问题。
SOLUTION:
否SOLUTION:
无法访问我们可以从这个小实验中看出,如果一个仓库不属于你的帐户,那么你便不具有修改它的权限。
这里 fork 就要派上用场了!你不能直接修改原仓库,但如果你将仓库 fork 到自己的帐户中,便拥有完全控制权了。
fork Lam 的项目
我将自己克隆 Lam 的项目。我的帐户没有直接编辑她的仓库的权限,所以我要将此仓库 fork 到我自己的帐户。
Task Description:
请登录你的 GitHub 帐户,然后按以下步骤操作:
Task Feedback:
很好,你完成了所有这些步骤!
我们来看看仓库的名称:
fork 项目后你的 GitHub 配置文件名称旁边会显示新的项目名称。此外,名称下面还会说明原始项目所在的位置。
可以看到我的帐户名 (richardkalehoff) 和仓库名称是如何显示的。并且,在仓库名称下,显示 "forked from udacity/course-collaboration-travel-plans"。这表明此项目在 我的 帐户中,但它与复制自的原始项目有联系。
挺不错的,对吧!现在你可以 fork GitHub 上的任何公共仓库 - 即你可以将仓库复制到自己的帐户中,并对获得的副本拥有完全控制权。
那么,不如你自己动手 fork 几个仓库练习一下吧!这里有几个你可以尝试:
fork 推送/拉取
因为 fork 仓库会使你在自己的帐户中拥有一份副本,所以你可以将其克隆到你的计算机,对其进行更改,然后将这些更改推送回 fork 的仓库。但记住,它会将更改推送回 你的 远程仓库,而不是被 fork 的 原始 远程仓库。
L2 - 推送到 Fork
小结
fork 是一种在托管服务上完成的操作,如 GitHub。fork 仓库会创建与原始仓库完全相同的副本,并将该副本移动到你的帐户。你对 fork 的仓库拥有完全控制权。修改 fork 的仓库不会更改原始仓库。